package serve;

import Common.Message;
import Common.MessageType;
import Common.User;

import java.awt.*;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

/*
提供服务给别人
 */
public class UserClientServe {
    //提供登录服务
    Socket socket=null;
    public boolean checkUser(User user){
        //连接服务端
        try {
             socket=new Socket("127.0.0.1",9999);
            ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
            oos.writeObject(user);
            //拿返回值
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            Message message=(Message) ois.readObject();
            //message.getMsgType()返回值？
            if(message.getMsgType().equals(MessageType.MESSAGE_LOGIN_SUCCEED)){
                System.out.println("登录成功。。。。");
                //创建一个线程 和 服务端保持连接 ClientConnectServerThread
                //多个线程 执行任务
                ClientConnectServiceThread thread=new ClientConnectServiceThread(socket);
                thread.start();
                //集中管理
                ManageClientConnectServeThread.addClientConnectServiceThread(user.getUserId(), thread);
                return true;
            }else {
                System.out.println("登陆失败,请重新登录");
                socket.close();
                return false;
            }

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

        return true;
    }
    public void onlineFriends(User user){
        //告诉服务器 我的需求
        Message message = new Message();
        //设置消息类型为获取在线用户列表
        message.setMsgType(MessageType.MESSAGE_ONLINE_FRIENDS);
        //设置信息发送者
        message.setSender(user.getUserId());
        //通过socket 将信息回写服务端
            //之前登陆成功 通过子线程拿socket
        ClientConnectServiceThread thread=ManageClientConnectServeThread.getClientConnectServiceThread(user.getUserId());
        //拿socket回写
        Socket socket1 = thread.getSocket();
        try {
            ObjectOutputStream oos=new ObjectOutputStream(socket1.getOutputStream());
            oos.writeObject(message);
        }catch (Exception e){
            e.getMessage();
        }
    }
}
